package com.example.demo01.Service;

import com.example.demo01.Entity.User;
import com.example.demo01.Repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
    public User registerUser(User user){
        if(userRepository.findByUsername(user.getUsername()) != null){
            throw new RuntimeException("Username already exists");

        }
        // 密码应加密存储
        // 这里假设我们会加密密码
        user.setPassword(encryptPassword(user.getPassword()));

        return userRepository.save(user);
    }
    // 验证用户登录
    public boolean authenticateUser(String username, String password) {
        // 查找用户名对应的用户
        User user = userRepository.findByUsername(username);

        // 判断用户名和密码是否匹配
        if (user != null && user.getPassword().equals(password)) {
            return true;  // 登录成功
        }
        return false;  // 登录失败
    }
    // 检查用户名是否已存在
    public boolean isUsernameExist(String username) {
        return userRepository.findByUsername(username) != null;
    }

    // 检查邮箱是否已存在
    public boolean isEmailExist(String email) {
        return userRepository.findByEmail(email) != null;
    }



    // 密码加密的示例方法
    private String encryptPassword(String password) {
        // 这里使用了一个假设的加密方法，实际开发中可以使用 bcrypt 等算法
        return password;  // 这只是一个示例，实际需要加密
    }
    // 密码强度验证
    public boolean isPasswordStrong(String password) {
        // 密码长度大于8位，包含大写字母、小写字母和数字
        String regex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,}$";
        return password.matches(regex);
    }

    // 邮箱格式验证
    public boolean isValidEmail(String email) {
        // 使用简单的正则表达式验证邮箱格式
        String regex = "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,7}$";
        return email.matches(regex);
    }
}
